<?php
namespace Library;

/**
 * Description of Page
 *
 * @author FFOZEU
 */

class Page extends ApplicationComponent{
    
    protected $contentFile;
    protected $vars = array();
    
    /*ajoute une variable la page*/
    public function addVar($var, $value){
        
        if (!is_string($var) || is_numeric($var) || empty($var)){
            throw new \InvalidArgumentException('Le nom de la variable doit être une chaine de caractère non nulle');
        }
        $this->vars[$var] = $value;
    }
    
    public function getGeneratedPage(){
        
        if (!file_exists($this->contentFile)){
            //die($this->contentFile);
            throw new \RuntimeException('La vue spécifiée n\'existe pas');
        }
        $link = $this->app->httpRequest();//new HttpRequest;
        $user = $this->app->user();
        $site = $this->app->site();
        $site->setSiteInfos();
        $nbrcolumn =2;
        $managers = new Managers('PDO', DbFactory::getPdoInstance());
        $adversliste = $managers->getManagerOf('Advers')->getActiveAdvers();
        extract($this->vars);
        
        ob_start();
        
        require $this->contentFile;
        
        $content = ob_get_clean();
        
        ob_start();
        /**
         *afin de gerer l'ajax et dans le soucis de ne pas recharger entièrement une page web,
         * nous allons charger un tamplate partiel ne contenant pas toute la structure de la page web 
         */
        $templates =dirname(__FILE__).'/../Applications/'.$this->app->name().'/Templates/layout.php';
        $customTemplates = dirname(__FILE__).'/../Applications/'.$this->app->name().'/Templates/partial.php';
        require !$this->app->httpRequest()->isXmlHttpRequest()?$templates :$customTemplates;
        
        return ob_get_clean();
    }
    
    public function setContentFile($contentFile){
        
        if (!is_string($contentFile) || empty($contentFile)){
            throw new \InvalidArgumentException('La vue spécifiée est invalide');
        }
        $this->contentFile = $contentFile;
    }
}

?>
